/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.secretaria.saude.view;

import com.secretaria.saude.dominio.ProcedimentoTabWin;
import com.secretaria.saude.util.JanelasUtil;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;

/**
 *
 * @author pablo
 */
public class ButtonEditor extends AbstractCellEditor
                         implements TableCellEditor,
			            ActionListener {
    ProcedimentoTabWin currentColor;
    JButton button;
    FrmSelecionarProcedimento selecaoProcedimento;
    String descricaoProcedimento;
    Object[][] data;
    protected static final String EDIT = "edit";


    public ButtonEditor(Frame window, Object[][] data) {
        //Set up the editor (from the table's point of view),
        //which is a button.
        //This button brings up the color chooser dialog,
        //which is the editor from the user's point of view.
        button = new JButton();
        button.setActionCommand(EDIT);
        button.addActionListener(this);
        button.setBorderPainted(false);
        this.data = data;


        //Set up the dialog that the button brings up.
        selecaoProcedimento = new FrmSelecionarProcedimento(window, Dialog.ModalityType.DOCUMENT_MODAL);
//        colorChooser = new JColorChooser();
//        dialog = JColorChooser.createDialog(button,
//                                        "Pick a Color",
//                                        true,  //modal
//                                        colorChooser,
//                                        this,  //OK button handler
//                                        null); //no CANCEL button handler
    }

    /**
     * Handles events from the editor button and from
     * the dialog's OK button.
     */
    public void actionPerformed(ActionEvent e) {
        if (EDIT.equals(e.getActionCommand())) {
            //The user has clicked the cell, so
            //bring up the dialog.
            //button.setBackground(currentColor);
            button.setText((currentColor != null && currentColor.getCodigo() != null) ? currentColor.getCodigo().toString() : "");

            selecaoProcedimento.procedimentoGaiaSelecionado = descricaoProcedimento;
            selecaoProcedimento.prepararConsulta();
            selecaoProcedimento.setToolTipSelecionado();

            //colorChooser.setColor(currentColor);
            JanelasUtil.exibirJanela(selecaoProcedimento);
            
            //selecaoProcedimento.setVisible(true);
            
            if(selecaoProcedimento.procedimentoTabWin != null || selecaoProcedimento.nenhum) {
                currentColor = selecaoProcedimento.procedimentoTabWin;
                if(selecaoProcedimento.nenhum) {
                    currentColor = new ProcedimentoTabWin(null,null, "");
                }
            }
            //Make the renderer reappear.
            fireEditingStopped();

        } else { //User pressed dialog's "OK" button.
            currentColor = selecaoProcedimento.procedimentoTabWin;
        }
    }

    //Implement the one CellEditor method that AbstractCellEditor doesn't.
    public Object getCellEditorValue() {
        return currentColor;
    }

    //Implement the one method defined by TableCellEditor.
    public Component getTableCellEditorComponent(JTable table,
                                                 Object value,
                                                 boolean isSelected,
                                                 int row,
                                                 int column) {
        currentColor = (ProcedimentoTabWin)value;
        descricaoProcedimento = data[row][0].toString();
        return button;
    }
    
}
